﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Web;
using Entidades.Sistema.Base;
using Mapping.Sistema.Base;

namespace Modelo.Sistema.Base
{
    public class CatalogoProvincia
    {
        
        private List<Provincia> Col_provincia;

        public CatalogoProvincia()
        {
            List<Provincia> provincias = (List<Provincia>)HttpContext.Current.Session["Col_provincia"];
            if (provincias == null)
            {
                provincias = Mapping.Sistema.Base.MappingProvincia.ConsultarProvincias();
                HttpContext.Current.Session["Col_provincia"] = provincias;
            }
            Col_provincia = provincias;
        }

        public ReadOnlyCollection<Provincia> ListarProvincia()
        {
            return Col_provincia.AsReadOnly();
        }

        public bool AgregarProvincia(Provincia oProvincia)
        {
            Col_provincia.Add(oProvincia);
            Mapping.Sistema.Base.MappingProvincia.AgregarProvincia(oProvincia);
            HttpContext.Current.Session["Col_provincia"] = Col_provincia;
            return true;
        }

        public bool EliminarProvincia(Provincia oProvincia)
        {
            Col_provincia.Remove(oProvincia);
            Mapping.Sistema.Base.MappingProvincia.EliminarProvincia(oProvincia);
            HttpContext.Current.Session["Col_provincia"] = Col_provincia;
            return true;
        }
        public void ModificarProvincia(Provincia oProvincia)
        {
            Mapping.Sistema.Base.MappingProvincia.ModificarProvincia(oProvincia);
            Col_provincia.Remove(oProvincia);
            Col_provincia.Add(oProvincia);
            HttpContext.Current.Session["Col_provincia"] = Col_provincia;
        }
        public Provincia BuscarProvincia(int idProv)
        {
            return this.Col_provincia.Find(unid => unid.IdProvincia == idProv);
        }
        public bool ValidarExistencia(Provincia oProvincia)
        {
            if (this.Col_provincia.Count(unid => unid.IdProvincia == oProvincia.IdProvincia) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }


        public Int32 GetMayor()
        {
            if (Col_provincia.Count == 0) return 0;

            Int32 maxIdProvincia =
                (from pro in Col_provincia
                 select pro.IdProvincia)
                .Max();

            return maxIdProvincia;
        }
    }
}
